package day1;

import java.util.Iterator;
import java.util.LinkedList;

public class LinkedListTest {
    public static void main(String[] args) {
        LinkedList<Object> linkedList = new LinkedList<>();
        //插入元素
        linkedList.add("one");
        linkedList.add("two");
        linkedList.add("three");
        linkedList.add("four");

        //删除
        linkedList.remove("four");

        //获取指定元素
        linkedList.getFirst();
        System.out.println("已为你查到："+linkedList.get(2));

        //遍历
        System.out.println("遍历结果为：");
        for (Object link : linkedList) {
            System.out.println(link);
        }

        //ArrayList和LinkedList的区别

        //ArrayList 是以动态数组的形式存储数据，
        //在数组临界点 需要扩容数组时，每次扩容会扩大上次容量的一半
        //例如储存10个数据，准备填写第11个数据时，扩容数据。此时的存储空间为15个
        //由于数组的连续性，所以arraylist的查询速度很快，但在指定位置（非首尾）插入时，影响其他数据索引。
        //相比较linkedList插入慢。 即查快改慢。

        //LinkedList 是以双向链表的形式存储数据。
        //个人理解: 双向链表就是一个数据 具有两个指针，一个指向上一个元素，一个指向下一个元素。
        //因此，在查询时，速度没有arrayList快。
        //但是在指定位置插入数据时，只需要知道上一个位置的索引和下一个位置的索引就可以执行插入操作了。
        //即对比arrayList 查慢 改快。

    }
}
